Windows 2012 R2 Terminal Service does not render Desktop if resolution width less than 600

Recently I had to realize that w2k12 only shows an empty background when connecting to a new Terminal Service session and the requested resolution is 240×320, 480×640 or 480×800. These reolutions are used by Remote Desktop Mobille if you select the option “Fit remote desktop to screen”.

After login, the Start screen (Metro-Ui) is shown, regardless of having set TS to start new sessions always in Desktop mode. If you then start a desktop application or simply the “Control Panel” or “My Computer”, which are Desktop apps both, the screen changes to show an empty (Start screen) background only.

rdm_fullscreen

The apps are started on the desktop, but the desktop will not be shown by TS!

If you first start the session with a supported resolution, let’s say 800×600 or even 600×800, and then just disconnect the session (do not logout) and reconnect to the existing session with an unsupported resolution, the Desktop and running apps will be shown normally.

rdm_landscape_00 rdm_landscape_01

This is not an issue with Remote Desktop Mobile only. If you try this with a Windows 7 or Windows 8 TS client, the desktop will not be rendered by TS if the session has been started with an unsupported resolution. The resolution must be changed manually in a saved rdp file, as these clients only support resolutions down to 800×600. Then use the saved rdp file to start a new session.

screen mode id:i:1
use multimon:i:0
desktopwidth:i:480
desktopheight:i:800

Result trying to start “Control Panel”:

win7_480x800 win7_480x800_01

If you test Remote DesktopĀ on a Windows Phone 8 device, for example, you will not be able to change the resolution. The Terminal Server uses the default resolution (1024×768) and the windows phone screen is always shown in landscape view.

Seems to be a bug in TS. Especially as if starting the session with a supported res. and then reconnecting with an unsupported res. the TS will render correctly. It will only not render the desktop, if the session is started with an unsupported res.